home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2gem106.lzh / CRYSTAL1.06 / SRC / CRYSTAL / VRASTER.MOD < prev    next >
Encoding:
Modula Implementation  |  1993-01-24  |  2.3 KB  |  106 lines

  1. IMPLEMENTATION MODULE VRaster;
  2.  
  3. (*
  4. VDI Raster Functions.
  5.  
  6. UK __DATE__ __TIME__
  7. *)
  8.  
  9. (*IMP_SWITCHES*)
  10.  
  11. FROM VDI    IMPORT contrl,intin,ptsin,intout,ptsout,v,vdi,CallVDI,
  12.                    XY,Integer,Point;
  13. FROM PORTAB IMPORT UNSIGNEDWORD,ANYTYPE;
  14. FROM SYSTEM IMPORT ADR;
  15. CAST_IMPORT
  16.  
  17. PROCEDURE VROCpyFm(    Handle : UNSIGNEDWORD;
  18.                        Mode   : RasterModes;
  19.                    VAR PXY    : ARRAY OF XY;
  20.                    VAR SrcMFDB: ARRAY OF ANYTYPE;
  21.                    VAR DesMFDB: ARRAY OF ANYTYPE);
  22. #if long
  23. VAR i: [0..7];
  24. #endif
  25.  
  26. BEGIN
  27.   intin[0]:= ORD(Mode);
  28. #if long
  29.   FOR i:= 0 TO 7 DO
  30.     ptsin[i]:= PXY[i];
  31.   END;
  32. #else
  33.   v.pioff:= ADR(PXY);
  34. #endif
  35.   WITH contrl.v DO
  36.     a[0]:= 109;
  37.     a[1]:= 4;
  38.     a[3]:= 1;
  39.     a[6]:= Handle;
  40.     v1:= ADR(SrcMFDB);
  41.     v2:= ADR(DesMFDB);
  42.   END;
  43.   vdi;
  44. #if not long
  45.   v.pioff:= ADR(ptsin);
  46. #endif
  47. END VROCpyFm;
  48.  
  49. PROCEDURE VRTCpyFm(    Handle    : UNSIGNEDWORD;
  50.                        Mode      : WritingModes;
  51.                    VAR PXY       : ARRAY OF XY;
  52.                    VAR SrcMFDB   : ARRAY OF ANYTYPE;
  53.                    VAR DesMFDB   : ARRAY OF ANYTYPE;
  54.                        PixelColor: UNSIGNEDWORD;
  55.                        BackGround: UNSIGNEDWORD);
  56. #if long
  57. VAR i: [0..7];
  58. #endif
  59.  
  60. BEGIN
  61.   intin[0]:= ORD(Mode);
  62.   intin[1]:= PixelColor;
  63.   intin[2]:= BackGround;
  64.   WITH contrl.v DO
  65.     v1:= ADR(SrcMFDB);
  66.     v2:= ADR(DesMFDB);
  67.   END;
  68. #if long
  69.   FOR i:= 0 TO 7 DO
  70.     ptsin[i]:= PXY[i];
  71.   END;
  72. #else
  73.   v.pioff:= ADR(PXY);
  74. #endif
  75.   CallVDI(121,4,3,Handle);
  76. #if not long
  77.   v.pioff:= ADR(ptsin);
  78. #endif
  79. END VRTCpyFm;
  80.  
  81. PROCEDURE VRTrnFm(    Handle : UNSIGNEDWORD;
  82.                   VAR SrcMFDB: ARRAY OF ANYTYPE;
  83.                   VAR DesMFDB: ARRAY OF ANYTYPE);
  84. BEGIN
  85.   WITH contrl.v DO
  86.     v1:= ADR(SrcMFDB);
  87.     v2:= ADR(DesMFDB);
  88.   END;
  89.   CallVDI(110,0,0,Handle);
  90. END VRTrnFm;
  91.  
  92. PROCEDURE VGetPixel(    Handle: UNSIGNEDWORD;
  93.                         X     : XY;
  94.                         Y     : XY;
  95.                     VAR Pel   : BOOLEAN;
  96.                     VAR Index : UNSIGNEDWORD);
  97. BEGIN
  98.   ptsin[0]:= X;
  99.   ptsin[1]:= Y;
  100.   CallVDI(105,1,0,Handle);
  101.   Pel:= intout[0] = 0;
  102.   Index:= intout[1];
  103. END VGetPixel;
  104.  
  105. END VRaster.
  106.